#ifndef EMOTION_EMOTIONMANAGER_H
#define EMOTION_EMOTIONMANAGER_H

#include <QObject>
#include <QList>
#include <QMap>


namespace Emotion {

class AbstractEmotion;
class AbstractEmotionManager;

class Manager : public QObject
{
    Q_OBJECT
public:
    explicit Manager(QObject *parent = 0);
    ~Manager();
        
private:
    static Manager *m_instance;

private:
    QList<AbstractEmotionManager *> m_emotionManagerList;

private:
    void init();

public:
    static Manager *instance(QObject *parent = 0);

public:
    void registerEmotionManager(AbstractEmotionManager *manager);
    void unregisterEmotionManager(AbstractEmotionManager *manager);

public:
    AbstractEmotionManager *at(int index) const;
    QString getCodeByName(const QString &name) const;

public:
    int count() const;
    int size() const;
};

} // namespace Emotion

#endif // EMOTION_EMOTIONMANAGER_H
